Miguel Interview10 July 2001
Quote
Craig, Miguel and Me
Doc: .Net to begin with is a big subject
Miguel: Yes. .Net isn't one thing. As a result you have some very bizarre conversations. Somebody's talking about the framework, and somebody else is talking about Passport, and so on. There is a lot of confusion. We're mostly looking at just what Microsoft calls the Framework SDK. This basically consists of three pieces. The first is a virtual machine they call it a virtual execution system which is basically a runtime.
Craig: It's the OS.
Miguel: Exactly. It's a runtime that multiple languages can target and generate code for. It's interesting because it also supports threading, garbage collection, and other features. It's interesting because you can mix languages. For example, you can mix C++ actually C-sharp with Java, Javascript, Visual Basic, Ada, Excel and so on. And they all work in this same environment. The other element of the framework is the C-sharp compiler that allows you to control all the aspects of the virtual execution (?) system, and a pretty complete class library.
Doc: I've seen .Net characterized as essentially similar conceptually to Java, except that its virtual machine welcomes more than one language.
Craig: Let's be clear that it would be inappropriate to characterize what we're talking about here as .Net. It's the .Net framework. We have to be specific about that because .Net is a bigger umbrella that covers a lot more things including directory and so on. Saying it's like Java is appropriate to the degree that it is in some sense; but the fact that it's multi-language and has its own object model that isn't interoperable with Java... there are just too many exceptions.
Doc: Yes. The concern that I have is that we really make clear what we're talking about here. When Sun came out with Java, they characterized it as a claim: "Write once, run everywhere." But they failed to say clearly what it is.. They almost never talked about what allowed it to run everywhere was the JVM.
Miguel: That's right..
Doc: So now I see Microsoft doing exactly the same thing by being very vague about all but the benefits. They also seem to be saying the opposite of Sun's claim: "Write anywhere, but run in one place."
Miguel: It has been really hard even for me to tell what Microsoft was talking about. Their original paper didn't make any sense. Then the framework SDK made a bit more sense, but there was still a lot of noise. So then as I looked deeper into what was in there I started to get interested in SOAP (Simple Object Access Protocol). So Ximian put together a SOAP implementation, so you could see SOAP servers and clients.We did this in December and released it in March or April. And we donated that to the Gnome Foundation. Then I got the documentation and started learnging about C-sharp, the execution environment, the virtual machine, the class libraries, developing a few applications. And one of the interesting things is that, if you develop against the .Net API you actually are pretty much independent of Win32. There is not much in there that binds you to Windows. It's actually a platform you can use, just like Java, except that Sun did have a reference implementation that ran in more than one operating system, which Microsoft does not.
Doc: So where did you, or Ximian go from that observation?
Miguel: Okay. Let me tell you the Ximian story on why we are interested in .Net. We've been working on this umbrella project as well, that contains a desktop, applications and a development framework: a widget set, a printing architecture, a component architecture, a CORBA implementation, XML subroutines... What we've done typically is wrap all these functionalities so you can use any programming language that you want. We did manual wrapping for Python, Perl, Ada, Lisp, Pascal, and a bunch of other languages. The problem is that we have to wrap every API that we expose. So we tend to write our APIs in C, then wrap those so you can use them from your programming language. What happens sometimes is that you are lagging behind, so if we come up with a new API and it takes some time for all of the language bindings to catch up with those APIs or changes.
Craig: If it's CORBA based it has a lot of other problems.
Miguel: The CORBA bits are only used by Bonobo. None of the rest of the Gnome API uses CORBA. It's just its component architecture.
Craig: What's the Bonobo component architecture?
Miguel: Bonobo is just a set of CORBA interfaces. CORBA is the transport layer. Bonobo is the actual set of contracts between components. Such as the contract for manipulating the user interface of an application. Here is how you add an item to a menu. When you embed a component, it merges its menus, and so on. But our APIs are not CORBA based. XML is just a plain C library chain (change?) for GTk, for GnomePrint,
Doc Searls is Senior Editor of Linux Journal and co-author of The Cluetrain Manifesto.